---
info:
  title: GitLab API
  version: v4
swagger: '2.0'
produces:
- application/json
securityDefinitions:
  access_token_header:
    type: apiKey
    name: PRIVATE-TOKEN
    in: header
  access_token_query:
    type: apiKey
    name: private_token
    in: query
host: gitlab.com
tags:
- name: user_counts
  description: Operations about user_counts
- name: metadata
  description: Operations related to metadata of the GitLab instance
- name: access_requests
  description: Operations related to access requests
paths:
  "/api/v4/groups/{id}/access_requests/{user_id}":
    delete:
      summary: Denies an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the group owned by the authenticated
          user
        type: string
        required: true
      - in: path
        name: user_id
        description: The user ID of the access requester
        type: integer
        format: int32
        required: true
      responses:
        '204':
          description: Denies an access request for the given user.
      tags:
      - access_requests
      operationId: deleteApiV4GroupsIdAccessRequestsUserId
  "/api/v4/groups/{id}/access_requests/{user_id}/approve":
    put:
      summary: Approves an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      consumes:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the group owned by the authenticated
          user
        type: string
        required: true
      - in: path
        name: user_id
        description: The user ID of the access requester
        type: integer
        format: int32
        required: true
      - in: formData
        name: access_level
        description: 'A valid access level (defaults: `30`, the Developer role)'
        type: integer
        format: int32
        default: 30
        required: false
      responses:
        '200':
          description: successful operation
          schema:
            "$ref": "#/definitions/API_Entities_AccessRequester"
          examples:
            successfull_response:
              id: 1
              username: raymond_smith
              name: Raymond Smith
              state: active
              created_at: '2012-10-22T14:13:35Z'
              access_level: 20
      tags:
      - access_requests
      operationId: putApiV4GroupsIdAccessRequestsUserIdApprove
  "/api/v4/groups/{id}/access_requests":
    post:
      summary: Requests access for the authenticated user to a group.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      consumes:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the group owned by the authenticated
          user
        type: string
        required: true
      responses:
        '200':
          description: successful operation
          schema:
            "$ref": "#/definitions/API_Entities_AccessRequester"
          examples:
            successfull_response:
              id: 1
              username: raymond_smith
              name: Raymond Smith
              state: active
              created_at: '2012-10-22T14:13:35Z'
              access_level: 20
      tags:
      - access_requests
      operationId: postApiV4GroupsIdAccessRequests
    get:
      summary: Gets a list of access requests for a group.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the group owned by the authenticated
          user
        type: string
        required: true
      - in: query
        name: page
        description: Current page number
        type: integer
        format: int32
        default: 1
        required: false
      - in: query
        name: per_page
        description: Number of items per page
        type: integer
        format: int32
        default: 20
        required: false
      responses:
        '200':
          description: Gets a list of access requests for a group.
          schema:
            "$ref": "#/definitions/API_Entities_AccessRequester"
      tags:
      - access_requests
      operationId: getApiV4GroupsIdAccessRequests
  "/api/v4/projects/{id}/access_requests/{user_id}":
    delete:
      summary: Denies an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated
          user
        type: string
        required: true
      - in: path
        name: user_id
        description: The user ID of the access requester
        type: integer
        format: int32
        required: true
      responses:
        '204':
          description: Denies an access request for the given user.
      tags:
      - access_requests
      operationId: deleteApiV4ProjectsIdAccessRequestsUserId
  "/api/v4/projects/{id}/access_requests/{user_id}/approve":
    put:
      summary: Approves an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      consumes:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated
          user
        type: string
        required: true
      - in: path
        name: user_id
        description: The user ID of the access requester
        type: integer
        format: int32
        required: true
      - in: formData
        name: access_level
        description: 'A valid access level (defaults: `30`, the Developer role)'
        type: integer
        format: int32
        default: 30
        required: false
      responses:
        '200':
          description: successful operation
          schema:
            "$ref": "#/definitions/API_Entities_AccessRequester"
          examples:
            successfull_response:
              id: 1
              username: raymond_smith
              name: Raymond Smith
              state: active
              created_at: '2012-10-22T14:13:35Z'
              access_level: 20
      tags:
      - access_requests
      operationId: putApiV4ProjectsIdAccessRequestsUserIdApprove
  "/api/v4/projects/{id}/access_requests":
    post:
      summary: Requests access for the authenticated user to a project.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      consumes:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated
          user
        type: string
        required: true
      responses:
        '200':
          description: successful operation
          schema:
            "$ref": "#/definitions/API_Entities_AccessRequester"
          examples:
            successfull_response:
              id: 1
              username: raymond_smith
              name: Raymond Smith
              state: active
              created_at: '2012-10-22T14:13:35Z'
              access_level: 20
      tags:
      - access_requests
      operationId: postApiV4ProjectsIdAccessRequests
    get:
      summary: Gets a list of access requests for a project.
      description: This feature was introduced in GitLab 8.11.
      produces:
      - application/json
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated
          user
        type: string
        required: true
      - in: query
        name: page
        description: Current page number
        type: integer
        format: int32
        default: 1
        required: false
      - in: query
        name: per_page
        description: Number of items per page
        type: integer
        format: int32
        default: 20
        required: false
      responses:
        '200':
          description: Gets a list of access requests for a project.
          schema:
            "$ref": "#/definitions/API_Entities_AccessRequester"
      tags:
      - access_requests
      operationId: getApiV4ProjectsIdAccessRequests
  "/api/v4/user_counts":
    get:
      summary: Return the user specific counts
      description: Assigned open issues, assigned MRs and pending todos count
      produces:
      - application/json
      responses:
        '200':
          description: Return the user specific counts
          schema:
            "$ref": "#/definitions/API_Entities_UserCounts"
      tags:
      - user_counts
      operationId: getApiV4UserCounts
  "/api/v4/metadata":
    get:
      summary: Retrieve metadata information for this GitLab instance.
      description: This feature was introduced in GitLab 15.2.
      produces:
      - application/json
      responses:
        '200':
          description: successful operation
          schema:
            "$ref": "#/definitions/API_Entities_Metadata"
          examples:
            successful_response:
              value:
                version: 15.0-pre
                revision: c401a659d0c
                kas:
                  enabled: true
                  externalUrl: grpc://gitlab.example.com:8150
                  version: 15.0.0
        '401':
          description: unauthorized operation
      tags:
      - metadata
      operationId: getApiV4Metadata
  "/api/v4/version":
    get:
      summary: Get the version information of the GitLab instance.
      description: This feature was introduced in GitLab 8.13 and deprecated in 15.5.
        We recommend you instead use the Metadata API.
      produces:
      - application/json
      responses:
        '200':
          description: successful operation
          schema:
            "$ref": "#/definitions/API_Entities_Metadata"
          examples:
            Example:
              value:
                version: 15.0-pre
                revision: c401a659d0c
                kas:
                  enabled: true
                  externalUrl: grpc://gitlab.example.com:8150
                  version: 15.0.0
        '401':
          description: unauthorized operation
      tags:
      - metadata
      operationId: getApiV4Version
definitions:
  API_Entities_AccessRequester:
    type: object
    properties:
      id:
        type: string
      username:
        type: string
      name:
        type: string
      state:
        type: string
      avatar_url:
        type: string
      avatar_path:
        type: string
      custom_attributes:
        "$ref": "#/definitions/API_Entities_CustomAttribute"
      web_url:
        type: string
      is_gitlab_employee:
        type: string
      email:
        type: string
      requested_at:
        type: string
    description: API_Entities_AccessRequester model
  API_Entities_CustomAttribute:
    type: object
    properties:
      key:
        type: string
      value:
        type: string
  API_Entities_UserCounts:
    type: object
    properties:
      merge_requests:
        type: integer
        format: int32
        example: 10
      assigned_issues:
        type: integer
        format: int32
        example: 10
      assigned_merge_requests:
        type: integer
        format: int32
        example: 10
      review_requested_merge_requests:
        type: integer
        format: int32
        example: 10
      todos:
        type: integer
        format: int32
        example: 10
    description: API_Entities_UserCounts model
  API_Entities_Metadata:
    type: object
    properties:
      version:
        type: string
      revision:
        type: string
      kas:
        type: object
        properties:
          enabled:
            type: boolean
          externalUrl:
            type: string
          version:
            type: string
    description: API_Entities_Metadata model
